[Day23] 加洛特的月亮獅子型態瞬間炸裂全場!
抱歉今天的圖和主題可能關聯性沒這麼強,但選在今天放這張真的再適合不過了!
先祝 IT邦的各位大大中秋節快樂!
這篇要來繼續弄懂一些自己不是很清楚的東西!
接著我們來比較三個很像的概念
empty?
nil?
blank?
empty?
翻譯:這個是空的嗎?(誰吃完了?)
empty?
是一個用來檢查集合裡是否為空的方法,這裡指的集合包括陣列、雜湊以及字串。
# 空的陣列
[].empty?
=> true
# 空的雜湊
{}.empty?
=> true
# 空的字串
"".empty?
=> true
# 有東西的字串
" ".empty?
=> false
最後一個 " "
在 empty?
方法檢查後得到 false
,原因是字串內含有「空白」這個值,所以並不是真的為空。
nil?
翻譯:我說你,是不存在嗎?(推眼鏡)
一開始學的時候,會覺得 false
和 nil
很像,後來才發現意思其實差很多。因為 false
代表的是「錯誤」、「假的」,而 nil
則代表「空的」或「不存在」,在其他語言可能是用 null
。
先把 nil
印出來看看:
puts nil
=> nil
在 Ruby 裡,所有的物件都不是 nil
,而只有 nil
是 nil
,因此在 nil?
方法檢查下:
nil.nil? #true
[].nil? #false
{}.nil? #false
"".nil? #false
" ".nil? #false
"abc".nil? #false
123.nil? #false
就 nil
一個跟大家不一樣,也太沒人緣了啊!
nil
它存在嗎?這個問法好像在討論哲學議題 :D
nil
在 Ruby 裡其實是真實存在的物件,它只是被用來表示「空的」、「不存在」的概念而已,可以用 nil?
方法來問它是不是 nil
(有點詭異)
nil.nil?
=> true
nil
:我就沒存在感了,還特別問我在不在是怎麼樣?當我塑膠膩!
關於 nil
可以參考龍哥的大作 為你自己學 Ruby on Rails ,裡面有更詳細的說明!
blank?
翻譯:沒有帶奇怪的東西進來就行~(睜一隻眼閉一隻眼)
blank?
則是一個較為寬鬆的檢查方法,不管集合內是「真·空」,還是集合內有「空白」,甚至代表不存在的 nil
,blank?
都可以接受。
nil.blank? #true
[].blank? #true
{}.blank? #true
"".blank? #true
" ".blank? #true
"abc".blank? #false
123.blank? #false
也就是說,前面 empty?
、 nil?
的所要篩選的概念「空的」以及「不存在」,到了 blank?
這裏一律都會回傳 true
blank?
:同意啦~哪次不同意~啊等等!有東西的話就真的不行~(追上)
簡單的比較就到這邊啦!是不是覺得似乎有那麼一點更了解了?(正能量上身)
在這邊敬祝大家中秋佳節愉快~